#include <math.h>

vektor3d vektorAddition(vektor3d  v1,  vektor3d v2 );
vektor3d vektorSubtraktion(vektor3d v1 ,vektor3d v2);
vektor3d vektorMultiplikationFloat(vektor3d v1,double faktor);
vektor3d vektorMultiplikationVektor(vektor3d v1,vektor3d v2);
vektor3d vektorNormalisieren(vektor3d v);
double vektorBetrag(vektor3d v);
vektor3d kreuzprodukt(vektor3d v1,vektor3d v2);
double punktprodukt(vektor3d v1,vektor3d v2);
void printVektor(vektor3d v);


vektor3d vektorAddition(vektor3d v1, vektor3d v2 ){
vektor3d v;
v.x=v1.x+v2.x;
v.y=v1.y+v2.y;
v.z=v1.z+v2.z;
return v;
}

vektor3d vektorSubtraktion(vektor3d v1 ,vektor3d v2){
vektor3d v;
v.x=v1.x-v2.x;
v.y=v1.y-v2.y;
v.z=v1.z-v2.z;
return v;
}

vektor3d vektorMultiplikationFloat(vektor3d v1,double faktor){
vektor3d v;
v.x=v1.x*faktor;
v.y=v1.y*faktor;
v.z=v1.z*faktor;
return v;
}
vektor3d vektorMultiplikationVektor(vektor3d v1,vektor3d v2){
vektor3d v;
v.x= v1.x*v2.x;
v.y= v1.y*v2.y;
v.z= v1.z*v2.z;
return v;
}

double vektorBetrag(vektor3d v){

return (sqrt(v.x*v.x + v.y*v.y+ v.z*v.z));
}

vektor3d vektorNormalisieren(vektor3d v){
double x = 1.0/ vektorBetrag(v);
return  vektorMultiplikationFloat(v,x);


//return v_erg;
}

double punktprodukt(vektor3d v1,vektor3d v2){

double x=v1.x*v2.x+v1.y*v2.y+v1.z*v2.z;

return x;
}

vektor3d kreuzprodukt(vektor3d v1,vektor3d v2){
vektor3d v;
v.x=v1.y*v2.z - v1.z * v2.y;
v.y=-v1.x* v2.z + v1.z* v2.x;
v.z=v1.x*v2.y - v1.y*v2.x;

return v;
}
void printVektor(vektor3d v){


printf("\n x: %f\n y: %f\n z:%f\n",v.x, v.y, v.z);

}
